How to debug python del self.callbacks[s][cid] keyError when the error message does not indicate where in my code the error is

Posted by lkloh on Stack Overflow See other posts from Stack Overflow or by lkloh
Published on 2014-06-06T21:23:49Z Indexed on 2014/06/06 21:24 UTC
Read the original article Hit count: 167

Filed under:
|
|
|

In a python program I am writing, I get an error saying

Traceback (most recent call last):
File "/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-   x86_64/Canopy.app/Contents/lib/python2.7/lib-tk/Tkinter.py", line 1470, in __call__
return self.func(*args)
File "/Users/lkloh/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 413, in button_release_event
FigureCanvasBase.button_release_event(self, x, y, num, guiEvent=event)
File "/Users/lkloh/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 1808, in button_release_event
self.callbacks.process(s, event)
File "/Users/lkloh/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/cbook.py", line 525, in process
del self.callbacks[s][cid]
KeyError: 103

Do you have any idea how I can debug this/ what could be wrong? The error message does not point to anywhere in code I have personally written. I get the error message only after I close my GUI window, but I want to fix it even though it does not break the functionality of my code.

The error is part of a very big program I am writing, so I cannot post all my code, but below is code I think is relevant:

def save(self, event): self.getSaveAxes() self.save_connect()

def getSaveAxes(self):
    saveFigure = figure(figsize=(8,1))
    saveFigure.clf()

    # size of save buttons
    rect_saveHeaders = [0.04,0.2,0.2,0.6]
    rect_saveHeadersFilterParams = [0.28,0.2,0.2,0.6]
    rect_saveHeadersOverride = [0.52,0.2,0.2,0.6]
    rect_saveQuit = [0.76,0.2,0.2,0.6]

    #initalize axes
    saveAxs = {}
    saveAxs['saveHeaders'] = saveFigure.add_axes(rect_saveHeaders)
    saveAxs['saveHeadersFilterParams'] = saveFigure.add_axes(rect_saveHeadersFilterParams)
    saveAxs['saveHeadersOverride'] = saveFigure.add_axes(rect_saveHeadersOverride)
    saveAxs['saveQuit'] = saveFigure.add_axes(rect_saveQuit)
    self.saveAxs = saveAxs

    self.save_connect()

    self.saveFigure = saveFigure
    show()

def save_connect(self):
    #set buttons
    self.bn_saveHeaders = Button(self.saveAxs['saveHeaders'], 'Save\nHeaders\nOnly')
    self.bn_saveHeadersFilterParams = Button(self.saveAxs['saveHeadersFilterParams'], 'Save Headers &\n Filter Parameters')
    self.bn_saveHeadersOverride = Button(self.saveAxs['saveHeadersOverride'], 'Save Headers &\nOverride Data')
    self.bn_saveQuit = Button(self.saveAxs['saveQuit'], 'Quit')

    #connect buttons to functions they trigger
    self.cid_saveHeaders = self.bn_saveHeaders.on_clicked(self.save_headers)
    self.cid_savedHeadersFilterParams = self.bn_saveHeadersFilterParams.on_clicked(self.save_headers_filterParams)
    self.cid_saveHeadersOverride = self.bn_saveHeadersOverride.on_clicked(self.save_headers_override)
    self.cid_saveQuit = self.bn_saveQuit.on_clicked(self.save_quit)

def save_quit(self, event):
    self.save_disconnect()
    close()

© Stack Overflow or respective owner

Related posts about python

Related posts about matplotlib